#include "login.h"    // 包含登录窗口的头文件
#include "ui_login.h" // 包含由Qt Designer生成的UI头文件
QString accountValue;
QString passwordValue;
// 构造函数，初始化登录窗口
login::login(QWidget *parent) : QWidget(parent),  // 继承自QWidget，parent为父窗口
                                ui(new Ui::login) // 初始化UI对象
{
    // 设置窗口大小
    resize(QT_WIDTH, QT_HEIGHT);
    // 设置窗口背景颜色为白色
    setStyleSheet("background-color: #FFFFFF;");

    // 创建一个垂直布局管理器
    QVBoxLayout *Vlayout = new QVBoxLayout();
    // 设置布局的边距为0（无外边距）
    Vlayout->setContentsMargins(0, 0, 0, 0);
    // 设置布局中子控件的间距为10
    Vlayout->setSpacing(10);

    // 添加一个顶部空白区域，高度为100，宽度为50
    QSpacerItem *topSpace = new QSpacerItem(50, 100);
    Vlayout->addSpacerItem(topSpace);

    // 创建一个标签，显示“QT微信”
    QLabel *label = new QLabel(this);
    label->setText("QT微信");
    // 设置字体为Arial，大小为16，加粗
    label->setFont(QFont("Arial", 16, QFont::Bold));
    // 设置文本居中对齐
    label->setAlignment(Qt::AlignCenter);
    // 设置文本颜色为绿色
    label->setStyleSheet("color: #1dad28;");
    // 将标签添加到垂直布局中
    Vlayout->addWidget(label);

    // 创建一个用户名输入框
    QLineEdit *username = new QLineEdit(this);
    // username->setText("admin");
    // 设置输入框的固定大小为300x40
    username->setFixedSize(300, 40);
    // 设置输入框的占位符文本
    username->setPlaceholderText("请输入用户名");
    // 将输入框添加到垂直布局中
    Vlayout->addWidget(username);
    // 添加一个空白区域，高度为20，宽度为50
    QSpacerItem *usernameSpace = new QSpacerItem(50, 20);
    Vlayout->addSpacerItem(usernameSpace);

    // 创建一个密码输入框
    QLineEdit *password = new QLineEdit(this);
    // password->setText("admin123");
    // 设置密码输入框的显示模式为密码模式（输入内容显示为圆点）
    password->setEchoMode(QLineEdit::Password);
    // 设置输入框的固定大小为300x40
    password->setFixedSize(300, 40);
    // 设置输入框的占位符文本
    password->setPlaceholderText("请输入密码");
    // 将输入框添加到垂直布局中
    Vlayout->addWidget(password);
    // 添加一个空白区域，高度为20，宽度为50
    QSpacerItem *passwordSpace = new QSpacerItem(50, 20);
    Vlayout->addSpacerItem(passwordSpace);

    // 创建一个登录按钮
    QPushButton *loginButton = new QPushButton("登录", this);
    // 设置按钮的样式表（背景颜色、文字颜色、圆角等）
    loginButton->setStyleSheet("QPushButton{background-color: #1dad28; color: #FFFFFF; border-radius: 5px;}"
                               "QPushButton:hover{background-color: #1dad28; color: #FFFFFF; border-radius: 5px;}"
                               "QPushButton:pressed{background-color: #1dad28; color:#FFFFFF; border-radius: 5px;}");
    // 设置按钮的固定大小为300x40
    loginButton->setFixedSize(300, 40);

    // 连接按钮的点击事件到Lambda表达式
    connect(loginButton, &QPushButton::clicked, [=]()
            {
        // 判断用户名是否为“admin”，密码是否为“admin123”
        if (username->text() !=""&& password->text() !="")
        {
            // 如果登录成功，输出调试信息
            qDebug() << "用户名：" << username->text() << "密码：" << password->text();
            accountValue = username->text();
            passwordValue = password->text();
            tcpFn->tcp_send(1000);
        }else{
            // 如果登录失败，弹出一个警告框
            QMessageBox::warning(this, "错误", "请输入正确的用户名和密码");
            return;
        } });
    // 将按钮添加到垂直布局中
    Vlayout->addWidget(loginButton);
    // 添加一个空白区域，高度为20，宽度为50
    QSpacerItem *loginButtonSpace = new QSpacerItem(50, 20);
    Vlayout->addSpacerItem(loginButtonSpace);

    // 创建一个水平布局管理器，用于放置“注册”和“忘记密码”按钮
    QHBoxLayout *smallBtnHlayout = new QHBoxLayout();
    // 设置布局的边距为0
    smallBtnHlayout->setContentsMargins(0, 0, 0, 0);
    // 设置按钮之间的间距为20
    smallBtnHlayout->setSpacing(20);

    // 创建一个“注册”按钮
    QPushButton *leftButton = new QPushButton("注册", this);
    // 设置按钮的样式表（透明背景、绿色文字、无边框等）
    leftButton->setStyleSheet("QPushButton{font-size:16px; font-weight:700; background-color: transparent; color: #1dad28; border: none;margin:0 0 0 -100px;padding:0;}"
                              "QPushButton:hover{background-color: transparent; color: #1dad28; border: none;}"
                              "QPushButton:pressed{background-color: transparent; color: #1dad28; border: none;}");
    // 连接按钮的点击事件到registerFn槽函数
    connect(leftButton, SIGNAL(clicked()), this, SLOT(registerFn()));
    // 将按钮添加到水平布局中
    smallBtnHlayout->addWidget(leftButton);

    // 创建一个“忘记密码”按钮
    QPushButton *rightButton = new QPushButton("忘记密码", this);
    // 设置按钮的样式表（透明背景、绿色文字、无边框等）
    rightButton->setStyleSheet("QPushButton{font-size:16px; font-weight:700; background-color: transparent; color: #1dad28; border: none;margin:0 -75 0 0;padding:0;}"
                               "QPushButton:hover{background-color: transparent; color: #1dad28; border: none;}"
                               "QPushButton:pressed{background-color: transparent; color: #1dad28; border: none;}");
    // 连接按钮的点击事件到Lambda表达式
    connect(rightButton, &QPushButton::clicked, [=]()
            {
                // 输出调试信息
                qDebug() << "忘记密码";
                // 发送忘记密码的信号
                emit toChangePassword(); });
    // 将按钮添加到水平布局中
    smallBtnHlayout->addWidget(rightButton);

    // 将水平布局添加到垂直布局中
    Vlayout->addItem(smallBtnHlayout);

    // 添加一个底部空白区域，高度为130，宽度为50
    QSpacerItem *bottomSpace = new QSpacerItem(50, 130);
    Vlayout->addSpacerItem(bottomSpace);

    // 创建两个水平空白区域，用于左右对齐
    QSpacerItem *leftSpace = new QSpacerItem(200, 50);
    QSpacerItem *rightSpace = new QSpacerItem(200, 50);

    // 创建一个水平布局管理器，用于包裹垂直布局
    QHBoxLayout *Hlayout = new QHBoxLayout();
    // 添加左侧空白区域
    Hlayout->addSpacerItem(leftSpace);
    // 添加垂直布局
    Hlayout->addItem(Vlayout);
    // 添加右侧空白区域
    Hlayout->addSpacerItem(rightSpace);

    // 将水平布局设置为窗口的主布局
    setLayout(Hlayout);
}

// 析构函数，释放UI对象
login::~login()
{
    delete ui;
}

// 注册槽函数，用于处理“注册”按钮的点击事件
void login::registerFn()
{
    // 输出调试信息
    qDebug() << "注册槽调用函数" << endl;
    // 发送注册信号
    emit toRegister();
}